
def chck(x):
    total=0
    # 统计每一行中，大于x的个数
    for i in range(1,n+1):
        # 乘法表中 公式 i*j 对应每一格的值 若i表示每一行 则j表示 该行中的个数，所以 x//i ==j 得到的就是 个数
        total+=min(x//i,m)
    # 如果 统计的个数 大于等于 目标个数k ，说明第k大的数，小于等于mid
    return total>=k

n,m,k=map(int,input().split())

# 二分去查找是不是 第k 大
left,right= 0,n*m+1

while left+1<right:
    mid=(left+right)//2
    # 检查当前 mid 是不是满足 第k大
    if chck(mid):
        # x 大了
        right=mid
    else:
        # x 小了
        left=mid

# left： 表示 小于第k大   right：表示 大于等于
print(right)
